package com.ruoyi.ldzlsc.controller;

import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.ldzlsc.domain.vo.ScBomVo;
import com.ruoyi.ldzlsc.service.IScBomService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * BOM控制器
 *
 * @author ruoyi
 * @date 2025-07-30
 */
@RestController
@RequestMapping("/sc/bom")
public class ScBomController extends BaseController {

    @Autowired
    private IScBomService scBomService;

    /**
     * 根据生产计划编号获取BOM信息
     * 
     * @param planCode 生产计划编号
     * @return BOM信息
     */
    @GetMapping("/plan/{planCode}")
    public AjaxResult getBomByPlanCode(@PathVariable("planCode") String planCode) {
        try {
            ScBomVo bomVo = scBomService.selectBomByPlanCode(planCode);
            return success(bomVo);
        } catch (Exception e) {
            logger.error("根据生产计划编号获取BOM信息失败: planCode={}, error={}", planCode, e.getMessage());
            return error("获取BOM信息失败: " + e.getMessage());
        }
    }

    /**
     * 根据产品ID获取BOM详情
     * 
     * @param productId 产品ID
     * @return BOM信息
     */
    @GetMapping("/detail")
    public AjaxResult getBomByProductId(@RequestParam("productId") Long productId) {
        try {
            ScBomVo bomVo = scBomService.selectBomByProductId(productId);
            return success(bomVo);
        } catch (Exception e) {
            logger.error("根据产品ID获取BOM信息失败: productId={}, error={}", productId, e.getMessage());
            return error("获取BOM信息失败: " + e.getMessage());
        }
    }
}
